<html>
  <head>
    <title>实体操作扩展  Entity Action Extensions  </title>
  </head>
  <body>
    <script>
           // 扩展对实体的操作  Entity Action Extensions

           /*
                  实体操作扩展系统允许你将新操作添加到实体的操作菜单中。

                  Click Me操作已添加到下面的User Management页面：

                  您可以通过编写自定义代码来执行任何操作（打开模式、进行HTTP API调用、重定向到另一个页面……等）。
                  
                  您可以访问代码中的当前实体。
           */

           /*
                一、如何设置？

                        在此示例中，我们将添加“点击我！”操作并为Identity Module的用户管理页面执行JavaScript代码。

                        1、创建JavaScript 文件

                                    首先，将一个新的JavaScript文件添加到您的解决方案中。
                                    
                                    我们在.Web项目：

                                            /Pages/Identity/Users/my-user-extensions.js

                                    在这里，这个JavaScript文件的内容：

                                            var clickMeAction = {
                                                  text: 'Click Me!',
                                                  action: function(data) {
                                                      //TODO: Write your custom code
                                                      alert(data.record.userName);
                                                  }
                                              };

                                              abp.ui.extensions.entityActions
                                                  .get('identity.user')
                                                  .addContributor(function(actionList) {
                                                      actionList.addTail(clickMeAction);
                                              });  // 扩展实体的操作，为实体添加操作要执行的JS函数

                                    在action函数中，您可以做任何需要做的事情。有关详细用法，请参阅API部分。

                        2、将文件添加到用户管理页面

                                    然后您需要将此JavaScript文件添加到用户管理页面。

                                    您可以利用打包和压缩系统的强大功能。

                                    在模块类的ConfigureServices中编写以下代码：

                                            Configure<AbpBundlingOptions>(options =>
                                            {
                                                options.ScriptBundles.Configure(
                                                    typeof(Volo.Abp.Identity.Web.Pages.Identity.Users.IndexModel).FullName,
                                                    bundleConfiguration =>
                                                    {
                                                        bundleConfiguration.AddFiles(
                                                            "/Pages/Identity/Users/my-user-extensions.js"
                                                        );
                                                    });
                                            });

                                        此配置将 my-user-extensions.js  添加到身份模块的用户管理页面。

                                         typeof(Volo.Abp.Identity.Web.Pages.Identity.Users.IndexModel).FullName是用户管理页面中捆绑包的名称。
                                         
                                         这是用于所有ABP模块的通用约定。   
           */


           /*
                二、API

                        本节介绍abp.ui.extensions.entityActionsJavaScript API的详细信息。

                        1、abp.ui.extensions.entityActions.get(entityName)

                                      此方法用于访问特定模块的实体操作。它需要一个参数：  

                                              entityName：相关模块定义的实体名称。

                        2、abp.ui.extensions.entityActions.get(entityName).actions

                                         
           */
    </script>
  </body>
</html>